#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include "pagina.h"

int main(int argc, char *argv[]) {
   /* ----------------------------------------------------------------------
      Declaracoes e inicio para verificacao do uso da memoria dinamica.
      ---------------------------------------------------------------------- */
   struct mallinfo info = mallinfo();
   int MemDinInicial = info.uordblks, MemDinFinal;
   /* ---------------------------------------------------------------------- */

// seu codigo aqui

	int i, j, tamanhoLista, vizinho, nVizinhos;
	ListaPrincipal *listaPrincipal, *auxVizinho;
	ListaCorresponde *listaCorresponde = NULL;
	char site[50];
	
	scanf(" %d", &tamanhoLista);
	
	if(!tamanhoLista) return 0; 
	
	montaListaPrincipal(&listaPrincipal, tamanhoLista); /* monta a lista principal com tamanho passado, ainda sem vizinhos */
	auxVizinho = listaPrincipal;
	
	for(i=0; i<tamanhoLista; i++)
	{
		scanf("%s", site);
		insereCorresponde(&listaCorresponde, site, i); /* insere na listaCorresponde para depois acessar os indices dos sites passados */
		
		scanf(" %d", &nVizinhos);
		
		for(j=0; j<nVizinhos; j++)
		{
			scanf(" %d", &vizinho);
			insereVizinho(&auxVizinho, vizinho);
		}
		
		auxVizinho = auxVizinho->prox; /* para nao ficar percorrendo a lista para achar o indice i e inserir seus vizinhos */
	}
	
	/*teste*/
	imprime(&listaPrincipal);
	
	liberaListaP(&listaPrincipal);
	liberaListaC(&listaCorresponde);


   /* --------------------------------------------------------------------- */
   /* Verificacao final do uso da memoria dinamica                          */
   /* --------------------------------------------------------------------- */
   info = mallinfo();
   MemDinFinal = info.uordblks;
   if (MemDinInicial!=MemDinFinal)
      printf("\n\nMemoria dinamica nao foi totalmente liberada (%d, %d)\n",
	     MemDinInicial,MemDinFinal);
   /* --------------------------------------------------------------------- */
   return 0;
}
